home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / PCCardEnablerPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  16.9 KB  |  526 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        PCCardEnablerPlugin.h
  3.  
  4.      Contains:    ???
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1997 by Apple Computer, Inc. and SystemSoft Corporation.  All rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __PCCARDENABLERPLUGIN__
  19. #define __PCCARDENABLERPLUGIN__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __NAMEREGISTRY__
  25. #include <NameRegistry.h>
  26. #endif
  27. #ifndef __INTERRUPTS__
  28. #include <Interrupts.h>
  29. #endif
  30. #ifndef __PCCARD__
  31. #include <PCCard.h>
  32. #endif
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=power
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56. #ifndef __CARDSERVICES__
  57. /*
  58.     NOTE: These prototypes conflict with CardServices.≈
  59.           You cannot use both PCCardEnablerPlugin.h and CardServices.h
  60.           
  61. */
  62.  
  63. /*    Copyright:    © 1996 SystemSoft Corporation, all rights reserved. */
  64. /*------------------------------------------------------------------------------------
  65.     Card Services calls exported by the Family
  66. ------------------------------------------------------------------------------------*/
  67. /*    Card Services for Card Enablers*/
  68.  
  69. EXTERN_API_C( OSStatus )
  70. CSGetCardServicesInfo            (UInt32 *                socketCount,
  71.                                  UInt32 *                complianceLevel,
  72.                                  UInt32 *                version);
  73.  
  74.  
  75. /* Function prototypes for tuples calls */
  76.  
  77. EXTERN_API_C( OSStatus )
  78. CSGetFirstTuple                    (PCCardSocket             socket,
  79.                                  UInt32                 device,
  80.                                  PCCardTupleIterator     tupleIterator,
  81.                                  Byte                     desiredTuple,
  82.                                  void *                    tupleData,
  83.                                  ByteCount *            tupleBufferSize,
  84.                                  Byte *                    foundTuple);
  85.  
  86. EXTERN_API_C( OSStatus )
  87. CSGetNextTuple                    (PCCardTupleIterator     tupleIterator,
  88.                                  Byte                     desiredTuple,
  89.                                  void *                    tupleData,
  90.                                  ByteCount *            tupleBufferSize,
  91.                                  Byte *                    foundTuple);
  92.  
  93.  
  94. /* Function prototypes for window calls*/
  95.  
  96. EXTERN_API_C( OSStatus )
  97. CSRequestWindow                    (PCCardSocket             vSocket,
  98.                                  UInt32                 device,
  99.                                  PCCardWindowAttributes  windowAttributes,
  100.                                  PCCardAccessSpeed         windowSpeed,
  101.                                  LogicalAddress *        windowBase,
  102.                                  PCCardWindowSize *        windowSize,
  103.                                  PCCardWindowOffset *    windowOffset,
  104.                                  PCCardWindowID *        requestedWindow);
  105.  
  106. EXTERN_API_C( OSStatus )
  107. CSReleaseWindow                    (PCCardWindowID         windowToRelease);
  108.  
  109. EXTERN_API_C( OSStatus )
  110. CSModifyWindow                    (PCCardWindowID         windowToModify,
  111.                                  PCCardWindowType         windowAttributes,
  112.                                  PCCardAccessSpeed         memorySpeed,
  113.                                  PCCardWindowOffset *    windowOffset);
  114.  
  115. EXTERN_API_C( OSStatus )
  116. CSGetWindowBaseAddress            (PCCardWindowID         window,
  117.                                  LogicalAddress *        baseAddress);
  118.  
  119. EXTERN_API_C( OSStatus )
  120. CSInquireWindow                    (PCCardSocket             vSocket,
  121.                                  UInt32                 device,
  122.                                  PCCardWindowID         windowID,
  123.                                  PCCardWindowAttributes * windowAttributes,
  124.                                  PCCardAccessSpeed *    windowParam,
  125.                                  UInt32 *                windowBase,
  126.                                  PCCardWindowSize *        windowSize,
  127.                                  PCCardWindowOffset *    windowOffset);
  128.  
  129. /* Function prototypes for CIS calls*/
  130.  
  131. EXTERN_API_C( OSStatus )
  132. CSValidateCIS                    (PCCardSocket             vSocket,
  133.                                  UInt32                 device,
  134.                                  UInt32 *                cisChainCount);
  135.  
  136. EXTERN_API_C( OSStatus )
  137. CSGetDeviceCount                (PCCardSocket             vSocket,
  138.                                  UInt32 *                deviceCount);
  139.  
  140.  
  141. /* Function prototypes for Status calls*/
  142.  
  143. EXTERN_API_C( OSStatus )
  144. CSGetStatus                        (PCCardSocket             vSocket,
  145.                                  UInt32 *                currentState,
  146.                                  UInt32 *                changedState,
  147.                                  PCCardVoltage *        Vcc,
  148.                                  PCCardVoltage *        Vpp);
  149.  
  150.  
  151. /* Function prototypes for configuration calls*/
  152.  
  153. EXTERN_API_C( OSStatus )
  154. CSRequestConfiguration            (PCCardSocket             vSocket,
  155.                                  UInt32                 device,
  156.                                  PCCardConfigOptions     configOptions,
  157.                                  PCCardInterfaceType     socketInterface,
  158.                                  PCCardCustomInterfaceID  customInterface,
  159.                                  PCCardVoltage             vcc,
  160.                                  PCCardVoltage             vpp,
  161.                                  PCCardIRQ                 IRQ,
  162.                                  PCCardDMA                 DMA,
  163.                                  UInt32                 configRegBaseAddress,
  164.                                  PCCardConfigPresentMask  configRegPresentMask,
  165.                                  PCCardFunctionConfigReg * configReg);
  166.  
  167. EXTERN_API_C( OSStatus )
  168. CSModifyConfiguration            (PCCardSocket             vSocket,
  169.                                  UInt32                 device,
  170.                                  PCCardConfigOptions     modifyAttributes,
  171.                                  PCCardIRQ                 IRQ,
  172.                                  PCCardDMA                 DMA,
  173.                                  PCCardVoltage             Vpp);
  174.  
  175. EXTERN_API_C( OSStatus )
  176. CSReleaseConfiguration            (PCCardSocket             vSocket,
  177.                                  UInt32                 device);
  178.  
  179. EXTERN_API_C( OSStatus )
  180. CSSetRingIndicate                (PCCardSocket             vSocket,
  181.                                  Boolean                 setRingIndicate);
  182.  
  183. EXTERN_API_C( OSStatus )
  184. CSResetFunction                    (PCCardSocket             vSocket,
  185.                                  UInt32                 device);
  186.  
  187. EXTERN_API_C( OSStatus )
  188. CSReadConfigurationRegister        (PCCardSocket             vSocket,
  189.                                  UInt32                 device,
  190.                                  PCCardConfigPresentMask  whichRegister,
  191.                                  UInt32                 configRegBaseAddress,
  192.                                  UInt8 *                registerValue);
  193.  
  194. EXTERN_API_C( OSStatus )
  195. CSWriteConfigurationRegister    (PCCardSocket             vSocket,
  196.                                  UInt32                 device,
  197.                                  PCCardConfigPresentMask  whichRegister,
  198.                                  UInt32                 configRegBaseAddress,
  199.                                  UInt8                     registerValue);
  200.  
  201. /* Function prototypes for Client Support calls*/
  202. EXTERN_API_C( OSStatus )
  203. CSRegisterClient                (PCCardSocket             vSocket,
  204.                                  PCCardEventMask         eventMask,
  205.                                  PCCardEventHandler     clientCallBack,
  206.                                  void *                    clientParam,
  207.                                  PCCardClientID *        newClientID);
  208.  
  209. EXTERN_API_C( OSStatus )
  210. CSDeRegisterClient                (PCCardClientID         theClientID);
  211.  
  212. EXTERN_API_C( OSStatus )
  213. CSSetEventMask                    (PCCardClientID         theClientID,
  214.                                  PCCardEventMask         newEventMask);
  215.  
  216. EXTERN_API_C( OSStatus )
  217. CSGetEventMask                    (PCCardClientID         theClientID,
  218.                                  PCCardEventMask *        newEventMask);
  219.  
  220. EXTERN_API_C( OSStatus )
  221. CSRegisterTimer                    (PCCardClientID         registeredClientID,
  222.                                  PCCardTimerID *        lpNewTimerID,
  223.                                  long                     delay);
  224.  
  225. EXTERN_API_C( OSStatus )
  226. CSDeRegisterTimer                (PCCardTimerID             timerID);
  227.  
  228. /* Function prototypes for CardBus Config Space access*/
  229. EXTERN_API_C( OSStatus )
  230. CSReadCardBusConfigSpace        (PCCardSocket             vSocket,
  231.                                  UInt32                 device,
  232.                                  UInt32                 configOffset,
  233.                                  Byte *                    data,
  234.                                  UInt32                 dataSize);
  235.  
  236. EXTERN_API_C( OSStatus )
  237. CSWriteCardBusConfigSpace        (PCCardSocket             vSocket,
  238.                                  UInt32                 device,
  239.                                  UInt32                 configOffset,
  240.                                  Byte *                    data,
  241.                                  UInt32                 dataSize);
  242.  
  243. /*------------------------------------------------------------------------------------
  244.     Card Enabler Types
  245. ------------------------------------------------------------------------------------*/
  246.  
  247. enum {
  248.     kUnknownDeviceType            = FOUR_CHAR_CODE('unkn'),
  249.     kDisplayDeviceType            = FOUR_CHAR_CODE('dspl'),
  250.     kBlockDeviceType            = FOUR_CHAR_CODE('blok'),
  251.     kByteDeviceType                = FOUR_CHAR_CODE('byte'),
  252.     kNetworkDeviceType            = FOUR_CHAR_CODE('netw'),
  253.     kSerialDeviceType            = FOUR_CHAR_CODE('ser '),
  254.     kParallelDeviceType            = FOUR_CHAR_CODE('parl'),
  255.     kMemoryDeviceType            = FOUR_CHAR_CODE('mem '),
  256.     kAIMSDeviceType                = FOUR_CHAR_CODE('aims'),
  257.     kSCSIDeviceType                = FOUR_CHAR_CODE('scsi')
  258. };
  259.  
  260. typedef OSType                             PCDeviceType;
  261.  
  262. enum {
  263.     kAttributeType                = 0,
  264.     kMemoryType                    = 1,
  265.     kIOType                        = 2
  266. };
  267.  
  268. typedef UInt32                             PCCardMemoryType;
  269.  
  270. enum {
  271.     kUnknown                    = FOUR_CHAR_CODE('unkn'),
  272.     kPCCard16                    = FOUR_CHAR_CODE('pc16'),
  273.     kCardBus                    = FOUR_CHAR_CODE('cdbs')
  274. };
  275.  
  276. typedef OSType                             PCCardArchitectureType;
  277. #define kNodeNameName                            "name"
  278. #define k16BitPCCardName                        "16bitcard"
  279. #define kCardbusPropertyName                    "cardbus"
  280. #define kNodeCompatiblePropertyName            "compatible"
  281. #define kDevice_TypeName                        "device_type"
  282. #define kDriverISTPropertyName                    "driver-ist"
  283. #define kFCRAccessPropertyName                    "FCRAccess"
  284. #define kConfigRegPropertyName                    "ConfigRegValues"
  285. #define kNodeTypePropertyName                    "PCCardNodeType"
  286. #define kDeviceNumberPropertName                "DeviceNumber"
  287. #define kSocketNumberPropertName                "SocketNumber"
  288.  
  289. /*------------------------------------------------------------------------------------
  290.   Plugin Dispatch Table
  291. ------------------------------------------------------------------------------------*/
  292.  
  293. enum {
  294.     kServiceTypePCCardEnabler    = FOUR_CHAR_CODE('card'),
  295.     kPCCardEnablerPluginVersion    = 0x00000001,
  296.     kPCCardEnablerPluginCurrentVersion = kPCCardEnablerPluginVersion
  297. };
  298.  
  299. /*    Card Enabler Entrypoints*/
  300. typedef CALLBACK_API_C( OSStatus , CEValidateHardwareProc )(const RegEntryID *cardRef);
  301. typedef CALLBACK_API_C( OSStatus , CEInitializeProc )(const RegEntryID *cardRef, Boolean replacingOld);
  302. typedef CALLBACK_API_C( OSStatus , CECleanupProc )(const RegEntryID *cardRef, Boolean beingReplaced);
  303. typedef CALLBACK_API_C( OSStatus , CEPowerManagementProc )(const RegEntryID *lpCardEntry, PCCardPowerOptions powerLevel);
  304. typedef CALLBACK_API_C( OSStatus , CEHandleEventProc )(const RegEntryID *cardRef, PCCardEvent theEvent);
  305. typedef CALLBACK_API_C( OSStatus , CEGetCardInfoProc )(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
  306. typedef CALLBACK_API_C( OSStatus , CEAddCardPropertiesProc )(const RegEntryID *cardRef);
  307. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCountProc )(const RegEntryID *cardRef, ItemCount *numberOfDevices);
  308. typedef CALLBACK_API_C( OSStatus , CEGetDeviceNameProc )(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
  309. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCompatibleProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  310. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
  311. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeNameProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  312. typedef CALLBACK_API_C( OSStatus , CEAddDevicePropertiesProc )(const RegEntryID *deviceRef, UInt32 device);
  313. typedef CALLBACK_API_C( OSStatus , CEConfigureDeviceProc )(const RegEntryID *deviceRef, UInt32 deviceNumber);
  314. typedef CALLBACK_API_C( OSStatus , CEFinalizeDeviceProc )(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
  315. typedef CALLBACK_API_C( OSStatus , CEValidateCISProc )(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
  316. typedef CALLBACK_API_C( OSStatus , CEGetFirstTupleProc )(UInt32 socket, UInt32 device, PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  317. typedef CALLBACK_API_C( OSStatus , CEGetNextTupleProc )(PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  318. struct PCCardEnablerPluginHeader {
  319.     UInt32                             pluginDispatchTableVersion;
  320.     UInt32                             reserved1;
  321.     UInt32                             reserved2;
  322.     UInt32                             reserved3;
  323. };
  324. typedef struct PCCardEnablerPluginHeader PCCardEnablerPluginHeader;
  325.  
  326. struct PCCardEnablerPluginDispatchTable {
  327.     PCCardEnablerPluginHeader         header;
  328.  
  329.                                                                 /* General functions*/
  330.     CEValidateHardwareProc             validateHardwareProc;
  331.     CEInitializeProc                 initializeProc;
  332.     CECleanupProc                     cleanUpProc;
  333.     CEPowerManagementProc             setPCCardPowerLevel;
  334.  
  335.                                                                 /* Card functions*/
  336.     CEHandleEventProc                 handleEventProc;
  337.     CEGetCardInfoProc                 getCardInfoProc;
  338.     CEAddCardPropertiesProc         addCardProperties;
  339.     CEGetDeviceCountProc             getDeviceCount;
  340.  
  341.                                                                 /* Device functions*/
  342.     CEGetDeviceNameProc             getDeviceName;
  343.     CEGetDeviceCompatibleProc         getDeviceCompatibleNames;
  344.     CEGetDeviceTypeProc             getDeviceType;
  345.     CEGetDeviceTypeNameProc         getDeviceTypeName;
  346.     CEAddDevicePropertiesProc         addDeviceProperties;
  347.     CEConfigureDeviceProc             configureDevice;
  348.     CEFinalizeDeviceProc             finalizeDevice;
  349.  
  350.                                                                 /* Card Services Overrides...*/
  351.     CEValidateCISProc                 validateCIS;
  352.     CEGetFirstTupleProc             getFirstTuple;
  353.     CEGetNextTupleProc                 getNextTuple;
  354.  
  355.                                                                 /* InterruptHandlers...*/
  356.     InterruptHandler                 cardInterruptHandlerFunction;
  357.     InterruptEnabler                 cardInterruptEnableFunction;
  358.     InterruptDisabler                 cardInterruptDisableFunction;
  359. };
  360. typedef struct PCCardEnablerPluginDispatchTable PCCardEnablerPluginDispatchTable;
  361.  
  362. typedef PCCardEnablerPluginDispatchTable * PCCardEnablerPluginDispatchTablePtr;
  363. /*------------------------------------------------------------------------------------
  364.     PC Card Enabler Utility calls exported by the Family
  365. ------------------------------------------------------------------------------------*/
  366. /*    Generic Enabler Entrypoints*/
  367. EXTERN_API_C( OSStatus )
  368. CEInitializeCard                (const RegEntryID *        cardRef,
  369.                                  Boolean                 replacingOld);
  370.  
  371. EXTERN_API_C( OSStatus )
  372. CEFinalizeCard                    (const RegEntryID *        cardRef,
  373.                                  Boolean                 beingReplaced);
  374.  
  375. EXTERN_API_C( OSStatus )
  376. CEPowerManagement                (const RegEntryID *        lpParentID,
  377.                                  PCCardPowerOptions     powerLevel);
  378.  
  379. EXTERN_API_C( OSStatus )
  380. CEHandleCardEvent                (const RegEntryID *        cardRef,
  381.                                  PCCardEvent             lTheCardEvent);
  382.  
  383. EXTERN_API_C( OSStatus )
  384. CEGetCardInfo                    (const RegEntryID *        cardRef,
  385.                                  PCCardDevType *        cardType,
  386.                                  PCCardSubType *        cardSubType,
  387.                                  StringPtr                 cardName,
  388.                                  StringPtr                 vendorName);
  389.  
  390. EXTERN_API_C( OSStatus )
  391. CEAddCardProperties                (const RegEntryID *        cardRef);
  392.  
  393. EXTERN_API_C( OSStatus )
  394. CEGetDeviceCount                (const RegEntryID *        cardRef,
  395.                                  ItemCount *            numberOfDevices);
  396.  
  397. /* device functions*/
  398. EXTERN_API_C( OSStatus )
  399. CEGetDeviceName                    (UInt32                 socketNumber,
  400.                                  UInt32                 deviceNumber,
  401.                                  char *                    deviceName);
  402.  
  403. EXTERN_API_C( OSStatus )
  404. CEGetDeviceCompatibleNames        (const RegEntryID *        deviceRef,
  405.                                  UInt32                 socketNumber,
  406.                                  UInt32                 deviceNumber,
  407.                                  char *                    name);
  408.  
  409. EXTERN_API_C( OSStatus )
  410. CEGetDeviceType                    (const RegEntryID *        deviceRef,
  411.                                  UInt32                 socketNumber,
  412.                                  UInt32                 deviceNumber,
  413.                                  PCDeviceType *            lpDeviceType);
  414.  
  415. EXTERN_API_C( OSStatus )
  416. CEGetDeviceTypeName                (const RegEntryID *        deviceRef,
  417.                                  UInt32                 socketNumber,
  418.                                  UInt32                 deviceNumber,
  419.                                  char *                    name);
  420.  
  421. EXTERN_API_C( OSStatus )
  422. CEAddDeviceProperties            (const RegEntryID *        deviceRef,
  423.                                  UInt32                 deviceNumber);
  424.  
  425. EXTERN_API_C( OSStatus )
  426. CEConfigureDevice                (const RegEntryID *        deviceRef,
  427.                                  UInt32                 deviceNumber);
  428.  
  429. EXTERN_API_C( OSStatus )
  430. CEFinalizeDevice                (UInt32                 socket,
  431.                                  UInt32                 device,
  432.                                  const RegEntryID *        deviceRef);
  433.  
  434.  
  435. /*    RegEntryID <-> socket number mapping functions*/
  436. EXTERN_API_C( OSStatus )
  437. CEGetSocketAndDeviceFromRegEntry (const RegEntryID *    lpNode,
  438.                                  UInt32 *                lpSocket,
  439.                                  UInt32 *                lpDevice);
  440.  
  441. EXTERN_API_C( OSStatus )
  442. CEGetPhysicalSocketNumber        (const RegEntryID *        socketRef,
  443.                                  const RegEntryID *        lpDeviceEntry,
  444.                                  UInt32 *                lpPhysicalSocketNumber);
  445.  
  446. /*    Hardware Validation Utilities*/
  447. EXTERN_API_C( OSStatus )
  448. CECompareCISTPL_VERS_1            (const RegEntryID *        cardRef,
  449.                                  Byte                     majorVersion,
  450.                                  Byte                     minorVersion,
  451.                                  const char *            manufacturer,
  452.                                  const char *            productName,
  453.                                  const char *            info1,
  454.                                  const char *            info2,
  455.                                  Boolean *                identical);
  456.  
  457. EXTERN_API_C( OSStatus )
  458. CECompareCISTPL_MANFID            (const RegEntryID *        cardRef,
  459.                                  UInt16                 manufacturerCode,
  460.                                  UInt16                 manufacturerInfo,
  461.                                  Boolean *                identical);
  462.  
  463. EXTERN_API_C( OSStatus )
  464. CECompareMemory                    (const RegEntryID *        cardRef,
  465.                                  PCCardMemoryType         memType,
  466.                                  ByteCount                 offset,
  467.                                  ByteCount                 length,
  468.                                  Byte *                    dataToCompare,
  469.                                  Boolean *                identical);
  470.  
  471. EXTERN_API_C( OSStatus )
  472. CEValidateCIS                    (UInt32                 socket,
  473.                                  UInt32                 device,
  474.                                  UInt32 *                lpCISChainCount);
  475.  
  476. EXTERN_API_C( InterruptMemberNumber )
  477. CEDefaultInterruptHandler        (InterruptSetMember     ISTmember,
  478.                                  void *                    refCon,
  479.                                  UInt32                 theIntCount);
  480.  
  481.  
  482. /*------------------------------------------------------------------------------------
  483.     PC Card Customization Resources
  484. ------------------------------------------------------------------------------------*/
  485.  
  486. enum {
  487.     kPCCardCustomInfoResType    = FOUR_CHAR_CODE('pccd'),
  488.     kPCCardCustomInfoVersion    = 0
  489. };
  490.  
  491. struct PCCardCustomResource {
  492.     long                             version;
  493.     short                             customIconID;                /*    ICN#, etc. resource ID*/
  494.     short                             customStringsID;            /*    STR# resource ID*/
  495.     short                             customTypeStringIndex;
  496.     short                             customHelpStringIndex;
  497.     OSType                             customAction;
  498.     long                             customActionParam1;
  499.     long                             customActionParam2;
  500. };
  501. typedef struct PCCardCustomResource PCCardCustomResource;
  502.  
  503. #endif  /*  ! defined(__CARDSERVICES__)  */
  504.  
  505.  
  506. #if PRAGMA_STRUCT_ALIGN
  507.     #pragma options align=reset
  508. #elif PRAGMA_STRUCT_PACKPUSH
  509.     #pragma pack(pop)
  510. #elif PRAGMA_STRUCT_PACK
  511.     #pragma pack()
  512. #endif
  513.  
  514. #ifdef PRAGMA_IMPORT_OFF
  515. #pragma import off
  516. #elif PRAGMA_IMPORT
  517. #pragma import reset
  518. #endif
  519.  
  520. #ifdef __cplusplus
  521. }
  522. #endif
  523.  
  524. #endif /* __PCCARDENABLERPLUGIN__ */
  525.  
  526.